// 导入createStore构造函数
import {
  createStore
} from 'vuex'

// 通过构造函数实例化对象
const store = createStore({
  // 状态（数据）
  state: {
    msg: '我是vuex的数据',
    arr: [],
    userInfo: [{ name: '张三' }, { role: '普通用户' }]
  },
  // vuex中的数据不能直接修改，只能通过mutations方法进行修改
  // mutations中的方法不能被外部调用，只能vuex内部提交
  mutations: {
    SET_STATE_ARR (state, data) {
      state.arr = data
      console.log(state)
    },
    SET_STATE_USERINFO (state, data) {
      state.userinfo = data
      console.log(state)
    }

  },
  // 书写函数，可以被外部调用，公共函数
  actions: {
    setState ({ commit }) {
      commit('SET_STATE_ARR', ['new_arr'])
    },
    Login ({ commit }) {
      return new Promise((resolve, reject) => {

      })
    }
  },
  // 书写对象，用于外部获取state的数据
  getters: {
    getState: state => state,
    getUserInfo: state => state.userInfo

  },
  // 可以用来vuex嵌套，集成多个状态树
  modules: {}
})

// 导出
export default store
